1 module hip.windowing.platforms.x11lib.input_event;
2 
3 //Currently unused
4 enum LinuxKeys
5 {
6     KEY_RESERVED = 0,
7     KEY_ESC = 1,
8     KEY_1 = 2,
9     KEY_2 = 3,
10     KEY_3 = 4,
11     KEY_4 = 5,
12     KEY_5 = 6,
13     KEY_6 = 7,
14     KEY_7 = 8,
15     KEY_8 = 9,
16     KEY_9 = 10,
17     KEY_0 = 11,
18     KEY_MINUS = 12,
19     KEY_EQUAL = 13,
20     KEY_BACKSPACE = 14,
21     KEY_TAB = 15,
22     KEY_Q = 16,
23     KEY_W = 17,
24     KEY_E = 18,
25     KEY_R = 19,
26     KEY_T = 20,
27     KEY_Y = 21,
28     KEY_U = 22,
29     KEY_I = 23,
30     KEY_O = 24,
31     KEY_P = 25,
32     KEY_LEFTBRACE = 26,
33     KEY_RIGHTBRACE = 27,
34     KEY_ENTER = 28,
35     KEY_LEFTCTRL = 29,
36     KEY_A = 30,
37     KEY_S = 31,
38     KEY_D = 32,
39     KEY_F = 33,
40     KEY_G = 34,
41     KEY_H = 35,
42     KEY_J = 36,
43     KEY_K = 37,
44     KEY_L = 38,
45     KEY_SEMICOLON = 39,
46     KEY_APOSTROPHE = 40,
47     KEY_GRAVE = 41,
48     KEY_LEFTSHIFT = 42,
49     KEY_BACKSLASH = 43,
50     KEY_Z = 44,
51     KEY_X = 45,
52     KEY_C = 46,
53     KEY_V = 47,
54     KEY_B = 48,
55     KEY_N = 49,
56     KEY_M = 50,
57     KEY_COMMA = 51,
58     KEY_DOT = 52,
59     KEY_SLASH = 53,
60     KEY_RIGHTSHIFT = 54,
61     KEY_KPASTERISK = 55,
62     KEY_LEFTALT = 56,
63     KEY_SPACE = 57,
64     KEY_CAPSLOCK = 58,
65     KEY_F1 = 59,
66     KEY_F2 = 60,
67     KEY_F3 = 61,
68     KEY_F4 = 62,
69     KEY_F5 = 63,
70     KEY_F6 = 64,
71     KEY_F7 = 65,
72     KEY_F8 = 66,
73     KEY_F9 = 67,
74     KEY_F10 = 68,
75     KEY_NUMLOCK = 69,
76     KEY_SCROLLLOCK = 70,
77     KEY_KP7 = 71,
78     KEY_KP8 = 72,
79     KEY_KP9 = 73,
80     KEY_KPMINUS = 74,
81     KEY_KP4 = 75,
82     KEY_KP5 = 76,
83     KEY_KP6 = 77,
84     KEY_KPPLUS = 78,
85     KEY_KP1 = 79,
86     KEY_KP2 = 80,
87     KEY_KP3 = 81,
88     KEY_KP0 = 82,
89     KEY_KPDOT = 83,
90 
91     KEY_ZENKAKUHANKAKU = 85,
92     KEY_102ND = 86,
93     KEY_F11 = 87,
94     KEY_F12 = 88,
95     KEY_RO = 89,
96     KEY_KATAKANA = 90,
97     KEY_HIRAGANA = 91,
98     KEY_HENKAN = 92,
99     KEY_KATAKANAHIRAGANA = 93,
100     KEY_MUHENKAN = 94,
101     KEY_KPJPCOMMA = 95,
102     KEY_KPENTER = 96,
103     KEY_RIGHTCTRL = 97,
104     KEY_KPSLASH = 98,
105     KEY_SYSRQ = 99,
106     KEY_RIGHTALT = 100,
107     KEY_LINEFEED = 101,
108     KEY_HOME = 102,
109     KEY_UP = 103,
110     KEY_PAGEUP = 104,
111     KEY_LEFT = 105,
112     KEY_RIGHT = 106,
113     KEY_END = 107,
114     KEY_DOWN = 108,
115     KEY_PAGEDOWN = 109,
116     KEY_INSERT = 110,
117     KEY_DELETE = 111,
118     KEY_MACRO = 112,
119     KEY_MUTE = 113,
120     KEY_VOLUMEDOWN = 114,
121     KEY_VOLUMEUP = 115,
122     KEY_POWER = 116	/* SC System Power Down */,
123     KEY_KPEQUAL = 117,
124     KEY_KPPLUSMINUS = 118,
125     KEY_PAUSE = 119,
126     KEY_SCALE = 120	/* AL Compiz Scale (Expose) */,
127     KEY_KPCOMMA = 121,
128     KEY_HANGEUL = 122,
129     KEY_HANGUEL = KEY_HANGEUL,
130     KEY_HANJA = 123,
131     KEY_YEN = 124,
132     KEY_LEFTMETA = 125,
133     KEY_RIGHTMETA = 126,
134     KEY_COMPOSE = 127
135 }
136 
137 /**
138 private HipKey getHipKeyFromSystem(uint key)
139     {
140         import hip.windowing.platforms.x11lib.input_event;
141         ushort k = cast(ushort)(key);
142         assert(k > 0 && k < ubyte.max, "Key out of range");
143         switch(k) with(X11Keys)
144         {
145             case KEY_BACKSPACE: return HipKey.BACKSPACE;
146             case KEY_TAB: return HipKey.TAB;
147             case KEY_ENTER: return HipKey.ENTER;
148             case KEY_LEFTSHIFT: return HipKey.SHIFT;
149             case KEY_RIGHTSHIFT: return HipKey.SHIFT;
150             case KEY_LEFTCTRL: return HipKey.CTRL;
151             case KEY_RIGHTCTRL: return HipKey.CTRL;
152             case KEY_LEFTALT: return HipKey.ALT;
153             case KEY_RIGHTALT: return HipKey.ALT;
154             case KEY_PAUSE: return HipKey.PAUSE_BREAK;
155             case KEY_CAPSLOCK: return HipKey.CAPSLOCK;
156             case KEY_ESC: return HipKey.ESCAPE;
157             case KEY_SPACE: return HipKey.SPACE;
158             case KEY_PAGEUP: return HipKey.PAGE_UP;
159             case KEY_PAGEDOWN: return HipKey.PAGE_DOWN;
160             case KEY_END: return HipKey.END;
161             case KEY_HOME: return HipKey.HOME;
162             case KEY_LEFT: return HipKey.ARROW_LEFT;
163             case KEY_UP: return HipKey.ARROW_UP;
164             case KEY_RIGHT: return HipKey.ARROW_RIGHT;
165             case KEY_DOWN: return HipKey.ARROW_DOWN;
166             case KEY_INSERT: return HipKey.INSERT;
167             case KEY_DELETE: return HipKey.DELETE;
168             case KEY_0: return HipKey._0;
169             case KEY_1: return HipKey._1;
170             case KEY_2: return HipKey._2;
171             case KEY_3: return HipKey._3;
172             case KEY_4: return HipKey._4;
173             case KEY_5: return HipKey._5;
174             case KEY_6: return HipKey._6;
175             case KEY_7: return HipKey._7;
176             case KEY_8: return HipKey._8;
177             case KEY_9: return HipKey._9;
178             case KEY_A: return HipKey.A;
179             case KEY_B: return HipKey.B;
180             case KEY_C: return HipKey.C;
181             case KEY_D: return HipKey.D;
182             case KEY_E: return HipKey.E;
183             case KEY_F: return HipKey.F;
184             case KEY_G: return HipKey.G;
185             case KEY_H: return HipKey.H;
186             case KEY_I: return HipKey.I;
187             case KEY_J: return HipKey.J;
188             case KEY_K: return HipKey.K;
189             case KEY_L: return HipKey.L;
190             case KEY_M: return HipKey.M;
191             case KEY_N: return HipKey.N;
192             case KEY_O: return HipKey.O;
193             case KEY_P: return HipKey.P;
194             case KEY_Q: return HipKey.Q;
195             case KEY_R: return HipKey.R;
196             case KEY_S: return HipKey.S;
197             case KEY_T: return HipKey.T;
198             case KEY_U: return HipKey.U;
199             case KEY_V: return HipKey.V;
200             case KEY_W: return HipKey.W;
201             case KEY_X: return HipKey.X;
202             case KEY_Y: return HipKey.Y;
203             case KEY_Z: return HipKey.Z;
204             case KEY_LEFTMETA: return HipKey.META_LEFT;
205             case KEY_RIGHTMETA: return HipKey.META_RIGHT;
206             case KEY_F1: return HipKey.F1;
207             case KEY_F2: return HipKey.F2;
208             case KEY_F3: return HipKey.F3;
209             case KEY_F4: return HipKey.F4;
210             case KEY_F5: return HipKey.F5;
211             case KEY_F6: return HipKey.F6;
212             case KEY_F7: return HipKey.F7;
213             case KEY_F8: return HipKey.F8;
214             case KEY_F9: return HipKey.F9;
215             case KEY_F10: return HipKey.F10;
216             case KEY_F11: return HipKey.F11;
217             case KEY_F12: return HipKey.F12;
218             case KEY_SEMICOLON: return HipKey.SEMICOLON;
219             case KEY_EQUAL: return HipKey.EQUAL;
220             case KEY_COMMA: return HipKey.COMMA;
221             case KEY_MINUS: return HipKey.MINUS;
222             case KEY_DOT: return HipKey.PERIOD;
223             case KEY_SLASH: return HipKey.SLASH;
224             case KEY_LEFTBRACE: return HipKey.BRACKET_LEFT;
225             case KEY_BACKSLASH: return HipKey.BACKSLASH;
226             case KEY_RIGHTBRACE: return HipKey.BRACKET_RIGHT;
227             case KEY_APOSTROPHE: return HipKey.QUOTE;
228             default:
229             {
230                 version(HipCheckUnknownKeycode)
231                 {
232                     import hip.util.conv:to;
233                     assert(false, "Unknown key received ("~to!string(k)~")");
234                 }
235                 else
236                     return cast(HipKey)k;
237             }
238         }
239     }
240 **/